éçè§£æããŒã«ãã³ãŒãã¬ãã¥ãŒã®ã¯ãŒã¯ãããŒã«çµ±åããããšã§ãã³ãŒãå質ãå€§å¹ ã«åäžããããã°ãåæžããã°ããŒãã«ããŒã ã®éçºãµã€ã¯ã«ãå éãããæ¹æ³ãã玹ä»ããŸãã
ã³ãŒãå質ã®å¹çåïŒã³ãŒãã¬ãã¥ãŒèªååã«ãããéçè§£æã®åšå
仿¥ã®ããŒã¹ã®éããœãããŠã§ã¢éçºç°å¢ã§ã¯ãé«å質ã®ã³ãŒããå¹ççã«æäŸããããšãæãéèŠã§ãããããžã§ã¯ããè€éåããããŒã ãå°ççãªå¢çãè¶ããŠæ¡å€§ããã«ã€ããŠãäžè²«ããã³ãŒãå質ãç¶æããããšã¯ãŸããŸã倧ããªèª²é¡ãšãªããŸããåŸæ¥ã®âŒ¿åã«ããã³ãŒãã¬ãã¥ãŒã¯éåžžã«è²Žéã§ãããããã«ããã¯ã«ãªãå¯èœæ§ããããŸããããã§ãã°ããŒãã«ãªéçºããŒã ã«ãšã£ãŠåŒ·åãªè§£æ±ºçãšããŠãéçè§£æãã³ãŒãã¬ãã¥ãŒã®èªååã«æŠç¥çã«çµ±åããããšãæµ®äžããŸãã
ã³ã¢ã³ã³ã»ããã®çè§£
çµ±åã«ã€ããŠè©³ããèŠãŠããåã«ãäž»èŠãªçšèªãæç¢ºã«ããŠãããŸãããã
ã³ãŒãã¬ãã¥ãŒãšã¯ïŒ
ã³ãŒãã¬ãã¥ãŒãšã¯ããœãŒã¹ã³ãŒãã®äœç³»çãªæ€æ»ã®ããšã§ããå ã®äœæè 以å€ã®éçºè ãã³ãŒãããã§ãã¯ããæœåšçãªãšã©ãŒãã»ãã¥ãªãã£ã®è匱æ§ãã¹ã¿ã€ã«ã®äžè²«æ§ã®æ¬ åŠããã¹ããã©ã¯ãã£ã¹ãžã®æºæ ãªã©ã確èªããããã»ã¹ã§ããäž»ãªç®æšã¯ãã³ãŒãã®å質ãåäžãããç¥èãå ±æããæ¬ é¥ãæ¬çªç°å¢ã«å°éããã®ãé²ãããšã§ãã
éçè§£æãšã¯ïŒ
éçè§£æã¯ããœãŒã¹ã³ãŒããå®éã«å®è¡ããããšãªã調æ»ãããã®ã§ããéçã¢ãã©ã€ã¶ãŒãšããŠç¥ãããããŒã«ãã³ãŒããè§£æããå®çŸ©æžã¿ã®ã«ãŒã«ã»ãããé©çšããŠæœåšçãªåé¡ãç¹å®ããŸãããããã®åé¡ã¯ã以äžã®ãããªç¯å²ã«åã³ãŸãã
- æ§æãšã©ãŒãèšèªä»æ§éåã
- ãã«ãã€ã³ã¿åç §ããªãœãŒã¹ãªãŒã¯ãoff-by-oneãšã©ãŒãªã©ã®æœåšçãªãã°ã
- SQLã€ã³ãžã§ã¯ã·ã§ã³ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒãå®å šã§ãªãèšå®ãªã©ã®ã»ãã¥ãªãã£è匱æ§ã
- ã³ãŒãã¹ã¿ã€ã«ããã©ãŒãããã®äžçµ±äžã
- èšèšäžã®æ¬ é¥ãä¿å®æ§ã®åé¡ã瀺åããã³ãŒãã®åãã
éçè§£æã¯ã人éã®ã¬ãã¥ãŒæ åœè ãäžç¥ããåã«ã確ç«ãããåºæºã«ç §ãããŠã³ãŒããç¶¿å¯ã«ãã§ãã¯ããèªåç£æ»åœ¹ã ãšèããŠãã ããã
ã³ãŒãã¬ãã¥ãŒã®èªååãšã¯ïŒ
ã³ãŒãã¬ãã¥ãŒã®èªååãšã¯ãã³ãŒãã¬ãã¥ãŒã®ã¯ãŒã¯ãããŒã®äžéšãèªååããããŒã«ãããã»ã¹ãå°å ¥ããããšãæããŸããããã¯äººéã®ã¬ãã¥ãŒæ åœè ãå®å šã«çœ®ãæãããšããæå³ã§ã¯ãªããããã圌ãã®èœåãè£åŒ·ããå埩çã§å®¢èгçãªãã§ãã¯ãèªåçã«åŠçããããšã§ããäžè¬çãªèŠçŽ ã«ã¯ãèªåãã¹ããéçè§£æãCI/CDãã€ãã©ã€ã³ãšã®çµ±åãå«ãŸããŸãã
çžä¹å¹æïŒã³ãŒãã¬ãã¥ãŒèªååã«ãããéçè§£æ
çã®åã¯ããããã®æŠå¿µãçµã¿åãããããšã«ãããŸããéçè§£æããŒã«ãèªååãããã³ãŒãã¬ãã¥ãŒããã»ã¹ã«çµ±åããããšã§ãããŒã ãå質ä¿èšŒã«åãçµãæ¹æ³ãå€ãããŸãã
ãªãéçè§£æãã³ãŒãã¬ãã¥ãŒã®èªååã«çµ±åããã®ãïŒ
ãã®å©ç¹ã¯å€å²ã«ããããç¹ã«åæ£ãã倿§ãªããŒã ã«ãšã£ãŠåœ±é¿ã倧ããã§ãã
- æ©æã®æ¬ 饿€åºïŒ éçã¢ãã©ã€ã¶ãŒã¯ãéçºãµã€ã¯ã«ã®æ©ã段éã§ãå€ãã®å Žåã人éã®ã¬ãã¥ãŒæ åœè ãã³ãŒããèŠãåã«ããã°ãè匱æ§ã®ããªãã®éšåãæ€åºã§ããŸããããã«ãããåŸã§åé¡ãä¿®æ£ããããã®ã³ã¹ããšåŽåãåçã«åæžãããŸãã
- åºæºã®äžè²«ããé©çšïŒ 人éã®ã¬ãã¥ãŒæ åœè ã¯ãã³ãŒãã£ã³ã°åºæºã®è§£éãç°ãªã£ãããäºçްãªã¹ã¿ã€ã«ã®éåãèŠéãããããããšããããŸããéçè§£æããŒã«ã¯ããã¹ãŠã®ã³ãŒã倿Žã«å¯ŸããŠãããã®ã«ãŒã«ãåäžã«é©çšããéçºè ãã¬ãã¥ãŒæ åœè ã®å Žæã«é¢ä¿ãªãäžè²«æ§ã確ä¿ããŸãã
- ã¬ãã¥ãŒæ åœè ã®ç²åŽè»œæžïŒ äžè¬çãªåé¡ã«ã€ããŠã³ãŒããäºåã«ã¹ã¯ãªãŒãã³ã°ããããšã§ãéçè§£æã¯äººéã®ã¬ãã¥ãŒæ åœè ãããžãã¯ãã¢ãŒããã¯ãã£ãèšèšãšãã£ãããè€éãªåŽé¢ã«éäžã§ããããã«ããŸããããã«ãããã¬ãã¥ãŒç²ããé²ããããæ·±ã䟡å€ã®ãããã£ãŒãããã¯ãå¯èœã«ãªããŸãã
- éçºãµã€ã¯ã«ã®å éïŒ èªåãã§ãã¯ã¯éçºè ã«å³åº§ã®ãã£ãŒãããã¯ãæäŸããŸãããã«ãªã¯ãšã¹ããéä¿¡ããããšãéçè§£æããŒã«ã¯ããã«å®è¡ããã人éã®ã¬ãã¥ãŒæ åœè ãåŸ ã€ããšãªãåé¡ãææããŸããããã«ãããéçºè ã¯åé¡ãç©æ¥µçã«ä¿®æ£ã§ããããŒãžããã»ã¹ãè¿ éåãããŸãã
- ã»ãã¥ãªãã£äœå¶ã®åŒ·åïŒ ã»ãã¥ãªãã£è匱æ§ã¯ãã³ã¹ããããããæå®³ãããããå¯èœæ§ããããŸããå€ãã®éì è§£æããŒã«ã¯ãäžè¬çãªã»ãã¥ãªãã£äžã®æ¬ é¥ãç¹å®ããããã«ç¹å¥ã«èšèšãããŠãããéèŠãªç¬¬äžç·ã®é²åŸ¡ãšããŠæ©èœããŸãã
- ç¥èå ±æã®åäžïŒ éçè§£æã«ãã£ãŠåŒ·èª¿ããããã¹ããã©ã¯ãã£ã¹ã®äžè²«ããé©çšã¯ãç¹ã«æ°ããããŒã ã¡ã³ããŒãæ £ããªãã³ãŒãããŒã¹ã§äœæ¥ããŠããéçºè ããããããªãæè²ããããšãã§ããŸãã
- ã°ããŒãã«ããŒã ã®ããã®ã¹ã±ãŒã©ããªãã£ïŒ ç°ãªãã¿ã€ã ãŸãŒã³ã«åæ£ããå€§èŠæš¡ã§è€éãªãããžã§ã¯ãã«åãçµãããŒã ã«ãšã£ãŠãæåã¬ãã¥ãŒã¯å€§ããªããã«ããã¯ã«ãªãåŸãŸããèªååã«ãããããŒã ã®å ŽæãåŽåæéã«é¢ä¿ãªããå質ãã§ãã¯ãäžè²«ããŠå¹ççã«å®è¡ãããããšãä¿èšŒãããŸãã
éçè§£æçµ±åã®äž»èŠã³ã³ããŒãã³ã
éçè§£æãæåè£ã«çµ±åããã«ã¯ãé©åãªããŒã«ãéžæããéçºã¯ãŒã¯ãããŒå ã§å¹æçã«èšå®ããããšãå«ãŸããŸãã
1. é©åãªéçè§£æããŒã«ã®éžæ
åžå Žã«ã¯ãããŸããŸãªããã°ã©ãã³ã°èšèªãç¹å®ã®ããŒãºã«å¯Ÿå¿ããå€çš®å€æ§ãªéçè§£æããŒã«ããããŸããããŒã«ãéžæããéã«ã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- èšèªãµããŒãïŒ ããŒã ã§äœ¿çšãããŠãããã¹ãŠã®ããã°ã©ãã³ã°èšèªãããŒã«ããµããŒãããŠããããšã確èªããŠãã ããã
- è§£æã®çš®é¡ïŒ ã»ãã¥ãªãã£ã«çŠç¹ãåœãŠãããŒã«ïŒSAST - éçã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ãã¹ãïŒããã°æ€åºã«çŠç¹ãåœãŠãããŒã«ãã³ãŒãã¹ã¿ã€ã«ãè€éæ§ã«çŠç¹ãåœãŠãããŒã«ãªã©ããããŸããçµã¿åãããå¿ èŠã«ãªãå ŽåããããŸãã
- çµ±åæ©èœïŒ ããŒã«ã¯ãããŒãžã§ã³ç®¡çã·ã¹ãã ïŒGitãGitHubãGitLabãBitbucketãªã©ïŒãCI/CDãã€ãã©ã€ã³ïŒJenkinsãGitHub ActionsãGitLab CIãCircleCIãªã©ïŒãããã³IDEãšã·ãŒã ã¬ã¹ã«çµ±åã§ããå¿ èŠããããŸãã
- ã«ã¹ã¿ãã€ãºæ§ïŒ ã«ãŒã«ã»ããã®èšå®ã誀æ€ç¥ã®æå¶ããããžã§ã¯ãã®ç¹å®ã®èŠä»¶ã«åãããè§£æã®èª¿æŽæ©èœãäžå¯æ¬ ã§ãã
- ã¬ããŒããšããã·ã¥ããŒãïŒ æç¢ºã§å®çšçãªã¬ããŒããšããã·ã¥ããŒãã¯ããã¬ã³ãã远跡ããæ¹åç¹ãç¹å®ããããã«äžå¯æ¬ ã§ãã
- ã³ãã¥ããã£ãšãµããŒãïŒ ãªãŒãã³ãœãŒã¹ããŒã«ã®å ŽåãæŽ»çºãªã³ãã¥ããã£ã¯ç¶ç¶çãªéçºãšãµããŒãã®è¯ãææšã§ããåçšããŒã«ã®å Žåãå ç¢ãªãã³ããŒãµããŒããéèŠã§ãã
äžè¬çãªéçè§£æã«ããŽãªãšããŒã«ã®äŸïŒ
- ãªã³ã¿ãŒïŒ ã¹ã¿ã€ã«ãšã©ãŒãããã°ã©ã äžã®ãã¹ããã§ãã¯ããããŒã«ãäŸïŒESLintïŒJavaScriptïŒãFlake8ïŒPythonïŒãCheckstyleïŒJavaïŒãPylintïŒPythonïŒã
- ãã©ãŒããã¿ãŒïŒ ã¹ã¿ã€ã«ã¬ã€ãã©ã€ã³ã«æºæ ããããã«ã³ãŒããèªåçã«åãã©ãŒãããããããŒã«ãäŸïŒPrettierïŒJavaScriptïŒãBlackïŒPythonïŒãktlintïŒKotlinïŒã
- ã»ãã¥ãªãã£ã¹ãã£ãïŒSASTïŒïŒ ã»ãã¥ãªãã£è匱æ§ãå°éã«æ¢ãããŒã«ãäŸïŒSonarQubeãVeracodeãCheckmarxãBanditïŒPythonïŒãOWASP Dependency-Checkã
- è€é床ã¢ãã©ã€ã¶ãŒïŒ ã³ãŒãã®è€é床ïŒäŸïŒãµã€ã¯ãããã£ãã¯è€é床ïŒã枬å®ããããŒã«ã§ãä¿å®æ§ã®åé¡ã瀺ãããšããããŸããå€ãã®ãªã³ã¿ãŒãSonarQubeã®ãããªå æ¬çãªãã©ãããã©ãŒã ããããæäŸããŸãã
2. ã«ãŒã«ã»ããã®èšå®ãšã«ã¹ã¿ãã€ãº
æšæºã®æ§æã¯è¯ãåºçºç¹ã§ããã广çãªçµ±åã«ã¯ã«ã¹ã¿ãã€ãºãå¿ èŠã§ããããã«ã¯ä»¥äžãå«ãŸããŸãã
- ãããžã§ã¯ãæšæºã®å®çŸ©ïŒ ããŒã ãšãããžã§ã¯ãã®ããã®æç¢ºãªã³ãŒãã£ã³ã°æšæºãšãã¹ããã©ã¯ãã£ã¹ã確ç«ããŸãã
- é¢é£ã«ãŒã«ã®æå¹åïŒ å®çŸ©ããæšæºãšãããžã§ã¯ãã®ããŒãºã«åèŽããã«ãŒã«ãæå¹ã«ããŸãããã¹ãŠã®ã«ãŒã«ãæå¹ã«ãããšãèšå€§ãªæ°ã®æ€åºçµæã«ã€ãªããå¯èœæ§ããããããé¿ããŠãã ããã
- 誀æ€ç¥ã®ç¡å¹åãŸãã¯æå¶ïŒ éçè§£æããŒã«ã¯å®ç§ã§ã¯ãªããå®éã«ã¯æ£ããã³ãŒãã誀ã£ãŠãã©ã°ä»ãããããšããããŸãïŒèª€æ€ç¥ïŒããããã調æ»ããå¿ èŠã«å¿ããŠæå¶ããããã»ã¹ãéçºããæå¶ã®çç±ãé©åã«ææžåããŸãã
- ã«ã¹ã¿ã ã«ãŒã«ã®äœæïŒ éåžžã«ç¹å®ã®ãããžã§ã¯ãèŠä»¶ããã¡ã€ã³åºæã®è匱æ§ã«å¯ŸããŠãäžéšã®ããŒã«ã§ã¯ã«ã¹ã¿ã ã«ãŒã«ã®äœæãå¯èœã§ãã
3. ããŒãžã§ã³ç®¡çã·ã¹ãã ïŒVCSïŒãšã®çµ±å
éçè§£æã®æãäžè¬çãªçµ±åãã€ã³ãã¯ããã«ãªã¯ãšã¹ãïŒPRïŒãŸãã¯ããŒãžãªã¯ãšã¹ãïŒMRïŒã®ã¯ãŒã¯ãããŒå ã§ããããã«ã¯éåžžã以äžãå«ãŸããŸãã
- PRã§ã®èªåãã§ãã¯ïŒ æ°ãããã©ã³ããäœæãããããPRãéãããããããã³ã«éçè§£æã¹ãã£ã³ãèªåçã«ããªã¬ãŒããããã«VCSïŒäŸïŒGitHubãGitLabïŒãèšå®ããŸãã
- PRã§ã®ã¹ããŒã¿ã¹å ±åïŒ éçè§£æã®çµæã¯ãPRã®ã€ã³ã¿ãŒãã§ãŒã¹å ã§æç¢ºã«è¡šç€ºãããã¹ãã§ããããã¯ãã¹ããŒã¿ã¹ãã§ãã¯ãã³ãŒããžã®ã³ã¡ã³ãããŸãã¯å°çšã®ãµããªãŒãéããŠè¡ãããŸãã
- ããŒãžã®ãããã¯ïŒ æ·±å»ãªã«ãŒã«éåïŒäŸïŒé«æ·±å»åºŠã®ã»ãã¥ãªãã£è匱æ§ãã³ã³ãã€ã«ãšã©ãŒïŒã«å¯ŸããŠã¯ãåé¡ã解決ããããŸã§PRãããŒãžãããã®ãé²ãããã«VCSãèšå®ã§ããŸãã
- äŸïŒ
- GitHub ActionsïŒ ãªã³ã¿ãŒãã»ãã¥ãªãã£ã¹ãã£ããå®è¡ãããã®ã¹ããŒã¿ã¹ãPRã«å ±åããã¯ãŒã¯ãããŒãèšå®ã§ããŸãã
- GitLab CI/CDïŒ GitHub Actionsãšåæ§ã«ãGitLab CIã¯è§£æãžã§ããå®è¡ããçµæãããŒãžãªã¯ãšã¹ããŠã£ãžã§ããã«è¡šç€ºã§ããŸãã
- Bitbucket PipelinesïŒ éçè§£æããŒã«ãå®è¡ããçµæãçµ±åããããã«èšå®ã§ããŸãã
4. CI/CDãã€ãã©ã€ã³ãšã®çµ±å
ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšç¶ç¶çãããã€ã¡ã³ãïŒCI/CDïŒãã€ãã©ã€ã³ã¯ãçŸä»£ã®ãœãããŠã§ã¢ããªããªãŒã®ããã¯ããŒã³ã§ããéçè§£æã¯ããããã®ãã€ãã©ã€ã³ã«å®ç§ã«é©åããŸãã
- ã²ãŒãããŒãã³ã°ïŒ éçè§£æã¯CIãã€ãã©ã€ã³ã®å質ã²ãŒããšããŠæ©èœããŸããè§£æã倱æããå ŽåïŒäŸïŒã¯ãªãã£ã«ã«ãªæ€åºãå€ããããæ°ããè匱æ§ãå°å ¥ãããïŒããã€ãã©ã€ã³ã¯åæ¢ããæ¬ é¥ã®ããã³ãŒããå ã«é²ãã®ãé²ããŸãã
- ã³ãŒãå質ã¡ããªã¯ã¹ïŒ CIãã€ãã©ã€ã³ã¯ãã³ãŒãã®è€é床ãã³ãŒãã«ãã¬ããžïŒã«ãã¬ããžã¯åçè§£æå¯ãã§ããïŒãæéçµéãšãšãã«æ€åºãããåé¡ã®æ°ãªã©ãéçè§£æããŒã«ã«ãã£ãŠçæãããã¡ããªã¯ã¹ãåéããã³å ±åã§ããŸãã
- ã¹ã±ãžã¥ãŒã«ãããã¹ãã£ã³ïŒ PR以å€ã«ããã³ãŒãããŒã¹å šäœã®å®æçãªå®å šãªéçè§£æã¹ãã£ã³ãã¹ã±ãžã¥ãŒã«ããŠãæè¡çè² åµãæ°ããªåé¡ãç¹å®ã§ããŸãã
- äŸïŒ äžè¬çãªCIãã€ãã©ã€ã³ã¯æ¬¡ã®ããã«ãªããŸãïŒã³ãŒãã®ã³ã³ãã€ã« â ãŠããããã¹ãã®å®è¡ â éçè§£æã®å®è¡ â çµ±åãã¹ãã®å®è¡ â ãããã€ãéçè§£æã倱æããå ŽåãåŸç¶ã®ã¹ãããã¯ã¹ããããããŸãã
5. IDEçµ±å
éçºè ã«çµ±åéçºç°å¢ïŒIDEïŒã§çŽæ¥ãã£ãŒãããã¯ãæäŸããããšã¯ãå質ãããã«å·Šã«ã·ãããããïŒã·ããã¬ããïŒåŒ·åãªæ¹æ³ã§ãã
- ãªã¢ã«ã¿ã€ã ãã£ãŒãããã¯ïŒ å€ãã®éçè§£æããŒã«ã¯ã人æ°ã®IDEïŒäŸïŒVS CodeãIntelliJ IDEAãEclipseïŒçšã®ãã©ã°ã€ã³ãæ¡åŒµæ©èœãæäŸããŠããŸãããããã®ããŒã«ã¯ãéçºè ãå ¥åããã«ã€ããŠæœåšçãªåé¡ããã€ã©ã€ããã峿ã®ä¿®æ£ãå¯èœã«ããŸãã
- ã³ã³ããã¹ãã¹ã€ããã®åæžïŒ éçºè ã¯ãç°¡åãªãšã©ãŒã確èªããããã«CIãžã§ãã®å®è¡ãPRã¬ãã¥ãŒãéãããã®ãåŸ ã€å¿ èŠããããŸãããããã«ä¿®æ£ã§ãããããçç£æ§ãåäžããŸãã
ã³ãŒãã¬ãã¥ãŒã«ãããéçè§£æå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
å©ç¹ãæå€§åããæœåšçãªæ©æŠãæå°éã«æããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ã«åŸã£ãŠãã ããã
- å°ããå§ããŠå埩ããïŒ ãã¹ãŠã®ããŒã«ãšã«ãŒã«ãäžåºŠã«å®è£ ããããšããªãã§ãã ãããäž»èŠèšèªã®åºæ¬çãªãã§ãã¯ã®ã³ã¢ã»ããããå§ããåŸã ã«æ¡å€§ããŠãããŸãã
- ããŒã ãæè²ããïŒ ãã¹ãŠã®éçºè ãããªãéçè§£æãå°å ¥ãããã®ããããŒã«ãäœãããã®ããçµæãã©ãè§£éããããçè§£ããŠããããšã確èªããŸãããã¬ãŒãã³ã°ã»ãã·ã§ã³ãããã¥ã¡ã³ããæäŸããŸãã
- æç¢ºãªããªã·ãŒã確ç«ããïŒ ããŒãžåã«ä¿®æ£ããªããã°ãªããªãã¯ãªãã£ã«ã«ãªåé¡ã¯äœããå°æ¥ã®ã¹ããªã³ãã§å¯ŸåŠã§ãããã®ã¯äœãã誀æ€ç¥ãã©ã®ããã«æ±ãããå®çŸ©ããŸãã
- ã¬ããŒãçæãšéç¥ã®èªååïŒ ã¬ããŒããèªåçã«çæããã¯ãªãã£ã«ã«ãªæ€åºçµæããã€ãã©ã€ã³ã®å€±æã«ã€ããŠé¢ä¿è ã«éç¥ããã·ã¹ãã ãèšå®ããŸãã
- ã«ãŒã«ã宿çã«èŠçŽããæŽæ°ããïŒ ãããžã§ã¯ããé²åããæ°ãããã¹ããã©ã¯ãã£ã¹ãç»å Žããã«ã€ããŠãéçè§£æã®ã«ãŒã«ã»ãããèŠçŽããæŽæ°ããŸãã
- æ€åºçµæã®åªå é äœä»ãïŒ ãã¹ãŠã®æ€åºçµæãåçã§ã¯ãããŸããããŸããã¯ãªãã£ã«ã«ãªã»ãã¥ãªãã£è匱æ§ãšãã°ãžã®å¯ŸåŠã«éäžããæ¬¡ã«ã¹ã¿ã€ã«äžã®åé¡ãã³ãŒãã®åãã«ç§»ããŸãã
- ãã¬ã³ããç£èŠããïŒ éçè§£æããŒã«ã«ãã£ãŠçæãããããŒã¿ã䜿çšããŠãç¹°ãè¿ãçºçããåé¡ãããŒã ãããå€ãã®ãã¬ãŒãã³ã°ãå¿ èŠãšããå¯èœæ§ã®ããé åããŸãã¯å質åäžã®åãçµã¿ã®å¹æãç¹å®ããŸãã
- ã°ããŒãã«ããŒã ã®ããã®ããŒã«ãã§ãŒã³ã®å€æ§æ§ãèæ ®ããïŒ äžè²«æ§ã¯éèŠã§ãããç°ãªãå°åã®ããŒã ãç°ãªãããŒã«ã«ã€ã³ãã©ã奜ã¿ã®ããŒã«ãæã£ãŠããå¯èœæ§ãããããšãèªèããŸããçžäºéçšæ§ãç®æããéžæãããœãªã¥ãŒã·ã§ã³ã倿§ãªç°å¢ã«å¯Ÿå¿ã§ããããã«ããŸãã
- å€§èŠæš¡ã³ãŒãããŒã¹ã§ã®ããã©ãŒãã³ã¹ãžã®å¯Ÿå¿ïŒ éåžžã«å€§ããªãããžã§ã¯ãã§ã¯ãå®å šãªéçè§£æã¹ãã£ã³ã«æéããããããšããããŸããã€ã³ã¯ãªã¡ã³ã¿ã«ã¹ãã£ã³æè¡ïŒå€æŽããããã¡ã€ã«ã®ã¿ãè§£æïŒãæ€èšããããCI/CDã€ã³ãã©ãæé©åããŸãã
課é¡ãšãã®å ææ¹æ³
éçè§£æã®çµ±åã¯åŒ·åã§ããã課é¡ããªãããã§ã¯ãããŸããã
1. 誀æ€ç¥ãšèŠéã
課é¡ïŒ ããŒã«ãæ£åœãªã³ãŒãã誀ã£ãŠãã©ã°ä»ããããïŒèª€æ€ç¥ïŒãå®éã®åé¡ãèŠéãããïŒèŠéãïŒããããšããããŸãã
解決çïŒ ç¶¿å¯ãªã«ãŒã«èšå®ãæç¢ºãªæ£åœåã䌎ãç¹å®ã®æ€åºçµæã®æå¶ãããã³ç¶ç¶çãªããŒã«è©äŸ¡ãæ€åºçµæãæ€èšŒããããã«ã¯ã人éã®ç£ç£ãäŸç¶ãšããŠéèŠã§ãã
2. ããã©ãŒãã³ã¹ã®ãªãŒããŒããã
課é¡ïŒ å€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã®å®å šã¹ãã£ã³ã¯é ããªãå¯èœæ§ããããéçºè ã®çç£æ§ãCI/CDãã€ãã©ã€ã³ã®æéã«åœ±é¿ãäžããŸãã
解決çïŒ ã€ã³ã¯ãªã¡ã³ã¿ã«è§£æïŒå€æŽããããã¡ã€ã«ã®ã¿ãè§£æïŒãå®è£ ããCI/CDã©ã³ããŒãæé©åãããã£ãã·ã¥ã掻çšããŸããPR段éã§ã¯ã¯ãªãã£ã«ã«ãªãã§ãã¯ã«éäžããå€éãã«ãã§ããå æ¬çãªã¹ãã£ã³ãå®è¡ããŸãã
3. ããŒã«ã®ä¹±ç«ãšè€éã
課é¡ïŒ ããŸãã«ãå€ãã®ç°ãªãããŒã«ã䜿çšãããšãè€éã§ç®¡çäžèœãªãšã³ã·ã¹ãã ã«ã€ãªããå¯èœæ§ããããŸãã
解決çïŒ å¯èœãªéãçµ±åããŸããè€æ°ã®è§£æã¿ã€ããæäŸããSonarQubeã®ãããªå æ¬çãªãã©ãããã©ãŒã ãéžæããŸããèšèªããšã«ããã€ãã®é«å質ãªããŒã«ã«æšæºåããŸãã
4. å€åãžã®æµæ
課é¡ïŒ éçºè ã¯èªåãã§ãã¯ã劚ããäžä¿¡ã®å°ãšèŠãªããããããŸããã
解決çïŒ éçºè ã«ãšã£ãŠã®å©ç¹ïŒæäœæ¥ã®åæžãæ¬çªç°å¢ã«å°éãããã°ã®æžå°ãè¿ éãªãã£ãŒãããã¯ïŒã匷調ããŸããããŒã«ã®éžæãšã«ãŒã«èšå®ã®ããã»ã¹ã«éçºè ãé¢äžãããŸããæè²ãšååã«çŠç¹ãåœãŠãŸãã
5. 倿§ãªèšèªãšã¹ã¿ãã¯éã§ã®äžè²«æ§ã®ç¶æ
課é¡ïŒ ã°ããŒãã«ããŒã ã¯å€èšèªç°å¢ã§äœæ¥ããããšãå€ããçµ±äžãããå質æŠç¥ãç¶æããããšãå°é£ã«ãªãå ŽåããããŸãã
解決çïŒ ã¢ãžã¥ã©ãŒã¢ãããŒããæ¡çšããŸããåèšèªã«å¯ŸããŠå ç¢ã§ãµããŒããå å®ããããŒã«ãéžæããŸããå¯èœã§ããã°ãããã·ã¥ããŒããããŸããŸãªãœãŒã¹ããã®çµæãéçŽã§ãããã©ãããã©ãŒã ãéããŠãèšå®ãšã¬ããŒããäžå åããŸãã
ã³ãŒãã¬ãã¥ãŒã«ãããéçè§£æã®æªæ¥
éçè§£æã®åéã¯çµ¶ããé²åããŠããŸããç§ãã¡ã¯ä»¥äžã®ãããªååãç®ã®åœããã«ããŠããŸãã
- AIãšæ©æ¢°åŠç¿ïŒ ããè€éãªãã¿ãŒã³ãç¹å®ãã誀æ€ç¥ãæžãããããã«ã¯ã³ãŒãã®ä¿®æ£ãææ¡ããããã«AIãæŽ»çšããããŸããŸãé«åºŠãªããŒã«ãç»å ŽããŠããŸãã
- ããåºç¯ãªã»ãã¥ãªãã£çµ±åïŒ ã»ãã¥ãªãã£è§£æãéçºã©ã€ããµã€ã¯ã«ã«æ·±ãçµ±åããïŒDevSecOpsïŒããšã«éç¹ã眮ãããããŒã«ã¯é«åºŠãªè匱æ§ãèŠã€ããã®ãããåŸæã«ãªã£ãŠããŸãã
- èšèªãµããŒãã®åŒ·åïŒ ããŒã«ã¯åžžã«æŽæ°ãããæ°ããããã°ã©ãã³ã°èšèªããã¬ãŒã ã¯ãŒã¯ãé²åããèšèªæ©èœããµããŒãããŠããŸãã
- ã¯ã©ãŠããã€ãã£ããœãªã¥ãŒã·ã§ã³ïŒ ãããŒãžãéçè§£æãµãŒãã¹ãæäŸããã¯ã©ãŠãããŒã¹ã®ãã©ãããã©ãŒã ãå¢ããå°å ¥ãšã¡ã³ããã³ã¹ãç°¡çŽ åãããŠããŸãã
çµè«
ã³ãŒãã¬ãã¥ãŒã®èªååã«éçè§£æãçµ±åããããšã¯ããã¯ãèŽ æ²¢åã§ã¯ãããŸãããçŸä»£ã®ãœãããŠã§ã¢éçºããŒã ãç¹ã«ã°ããŒãã«ã«æŽ»åããããŒã ã«ãšã£ãŠã¯å¿ éåã§ããäžè¬çãªãšã©ãŒãã»ãã¥ãªãã£äžã®æ¬ é¥ãã¹ã¿ã€ã«éåã®æ€åºãèªååããããšã§ãçµç¹ã¯ã³ãŒãå質ãå€§å¹ ã«åäžãããéçºã³ã¹ããåæžããã»ãã¥ãªãã£ãæ¹åããåžå Žæå ¥ãŸã§ã®æéãççž®ããããšãã§ããŸãã
æåã®éµã¯ãææ ®æ·±ãã¢ãããŒãã«ãããŸããé©åãªããŒã«ãéžæãããããžã§ã¯ãã®ããŒãºã«åãããŠã«ã¹ã¿ãã€ãºããéçºã¯ãŒã¯ãããŒã«ã·ãŒã ã¬ã¹ã«çµ±åããããŒã å ã«å質æèã®æåãè²ãããšã§ãã广çã«å®è£ ãããã°ãéçè§£æã¯åŒ·åãªå³æ¹ãšãªããäžçäžã®éçºè ãããè¯ããœãããŠã§ã¢ãããéãæ§ç¯ã§ããããæ¯æŽããŸãã
èªååãåãå ¥ããŸããããã³ãŒãå質ãé«ããŸããããã°ããŒãã«éçºããŒã ãåã¥ããŸãããã